/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.ufu.sdg12014.thriftpluresdb.client;

import br.ufu.sdg12014.base.replycoordinator.ThriftReplica;
import br.ufu.sdg12014.base.replycoordinator.Transacao;
import java.util.List;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TProtocol;

/**
 *
 * @author SergioPeres
 */
public class Action {

    private ThriftReplica.Client client;
    
    public Action(TProtocol prot) {
        client = new ThriftReplica.Client(prot);
    }
    
    public String enter() {
        try {
            return client.opEnter();
        } catch (TException ex) {
            return "enter: Erro ao tentar criar uma nova entrada!";
        }
    }
    
    public String updateServerFile(List<String> listaParticipantes) {
        try {
            return client.opUpdateServerFile(listaParticipantes);
        } catch (TException ex) {
            System.out.println("updateServerFile: Erro ao tentar criar uma nova entrada!");
            return null;
        }
    }
    
    public boolean globalAbort(int clientToken) {
        try {
            return client.opGlobalAbort(clientToken);
        } catch (TException ex) {
            System.out.println("globalAbort: Erro ao tentar ler uma entrada!");
            return false;
        }
    }
    
    public boolean globalCommit(int clientToken) {
        try {
            return client.opGlobalCommit(clientToken);
        } catch (TException ex) {
            System.out.println("globalCommit: Erro ao tentar alterar uma entrada!");
            return false;
        }
    }
    
    public boolean prepareCommit(int clientToken) {
        try {
            return client.opPrepareCommit(clientToken);
        } catch (TException ex) {
            System.out.println("prepareCommit: Erro ao tentar apabar uma entrada!");
            return false;
        }
    }
    
    public boolean requestVote(int clientToken, Transacao transacao) {
        try {
            return client.opRequestVote(clientToken, transacao);
        } catch (TException ex) {
            System.out.println("requestVote: Erro ao tentar apabar uma entrada!");
            return false;
        }
    }
}
